type r1 = ReturnType<() => void> // void

class Person {
  constructor(name: string, age?: number) {}
}

const per = typeof Person

type testInfer<T> = T extends (infer K)[] ? K : never
type inferRes = testInfer<number[]> // number
type inferRes2 = testInfer<number> // never

type testInfer2<T> = T extends infer K ? K : never
type inferRes3 = testInfer2<never>
